package com.cqupt.service;

import com.cqupt.pojo.Enclosure;
import com.cqupt.pojo.Knowledge;
import com.cqupt.pojo.Type;

import java.util.List;
import java.util.Map;


public interface KnowledgeService {

    /**
     * 获取所有的只是列表（带筛选）
     * @param typeId 只是类别
     * @param view_type 浏览类别（最新或最热）
     * @param approvalStatus 知识审批状态
     * @param searchText 关键词
     * @return
     */
    List<Map<String,Object>> getAllKnowledge(int typeId, int view_type, int approvalStatus, String searchText);
    /**
     * 录入新知识
     * @param knowledge 知识
     * @return 成功返回 1 失败返回 -1
     */
    Integer insertKnowledge(Knowledge knowledge);
    /**
     * 根据知识id删除知识
     * @param id 知识id
     * @return 成功返回1，失败返回-1
     */
    Integer deleteKnowledge(int id);

    /**
     * 更新知识
     * @param knowledge
     * @return 成功返回1，失败返回-1
     */
    Integer updateKnowledge(Knowledge knowledge);

    /**
     * 根据id获取知识
     * @param id 知识id
     * @return
     */
    Map<String,Object> getKnowledgeById(int id);

    /**
     * 采纳知识（未处理告警页面）
     * @param id 知识id
     * @param commonKey 公共键值
     * @return
     */
    Integer adoptKnowledge(int id,String commonKey);
    // 获取分类列表
    List<Type> getAllType(Map<String, Object> map);
    Integer getAllTypeCount();
    // 添加分类
    Integer addType(Type t);
    // 删除分类
    Integer deleteTypeById(List<Integer> ids);
    // 更新分类
    Integer updateType(Type t);
    // 根据分类查询该分类下是否有知识
    Integer getKnowledgeCountByType(List<Integer> ids);

    /**
     * 根据知识id查询知识名称
     * @param id 知识id
     * @return
     */
    String getTypeNameByID(int id);

    /**
     * 根据公共键值查询知识列表
     * @param after_exp 公共键值
     * @return 知识列表
     */
    List<Map<String, Object>> findKnowledgeByKey(String after_exp);

    /**
     * 知识审批
     * @param id 知识id
     * @param approval 审批状态
     * @param approval_man 审批者
     * @return 成功返回true,失败返回false
     */
    boolean approvalKnowledge(int id, int approval, String approval_man);

    /**
     * 查询绑定的知识列表（按照采纳数降序排列）
     * @param after_exp
     * @return
     */
    List<Map<String, Object>> findBoundedKnowledgeBounded(String after_exp);

    /**
     * 知识点击，浏览次数增加
     * @param knowledgeId 知识id
     * @return 成功返回1,失败返回-1
     */
    int setKnowledgeViewCount(int knowledgeId);

    List<Enclosure> getClosureByKnowledgeId(Map<String, Object> params);
}
